This invention relates to non-volatile storage for gaming machines such as slot machines and video poker machines. More particularly, the present invention relates to hardware and methods for providing battery backed random access memory on gaming machines.
As technology in the gaming industry progresses, the traditional mechanically driven reel slot machines are being replaced with electronic counterparts having CRT, LCD video displays or the like and gaming machines such as video slot machines and video poker machines are becoming increasingly popular. Part of the reason for their increased popularity is the nearly endless variety of games that can be implemented on gaming machines utilizing advanced electronic technology. In some cases, newer gaming machines are utilizing computing architectures developed for personal computers. These video/electronic gaming advancements enable the operation of more complex games, which would not otherwise be possible on mechanical-driven gaming machines and allow the capabilities of the gaming machine to evolve with advances in the personal computing industry.
Typically, utilizing a master gaming controller, the gaming machine controls various combinations of devices that allow a player to play a game on the gaming machine and also encourage game play on the gaming machine. For example, a game played on a gaming machine usually requires a player to input money or indicia of credit into the gaming machine, indicate a wager amount, and initiate a game play. These steps require the gaming machine to control input devices, including bill validators and coin acceptors, to accept money into the gaming machine and recognize user inputs from devices, including touch screens and button pads, to determine the wager amount and initiate game play. After game play has been initiated, the gaming machine determines a game outcome, presents the game outcome to the player and may dispense an award of some type depending on the outcome of the game.
To implement the gaming features described above on a gaming machine using a components utilized in the personal computer industry, a number of requirements unique to the gaming industry must be considered. One such requirement is the storage of critical game information. Traditionally, gaming machines have been designed to store critical game information such as general accounting information (e.g. credits input the gaming machine and credits dispensed from the gaming machine) and a state of a game being played on the gaming machine using a non-volatile memory storage device. For example, game state information stored in a non-volatile memory might include the state of game currently being played on the gaming machine as well as game history information on a number of previous games played on the gaming machine that may be recalled when a malfunction such as a power failure has occurred or when a player has a dispute with the outcome of a previous game played on the gaming machine. A battery backed random access memory (RAM) is an example of a non-volatile memory storage device used previously on many types of gaming machines.
The non-volatile memory storage device may be designed to store critical game information for long periods of time. The length of period of time may be dictated by the gaming jurisdiction where the gaming machine is operated. For example, a battery backed RAM storage device may be designed to store data for a minimum of five years and even as long as seven years without replacing or maintaining the battery. Thus, to limit the battery size, cost and maintenance requirements for long storage periods, electronic RAM memory hardware with a low power consumption is required.
A typical modern video gaming machine contains several devices such as the microprocessor, RAM memory, ROM memory, mass storage devices, video display controller, sound generation hardware, etc. which share commonality with commercially available devices designed for personal computers. The typical system architecture of a modern personal computer control chipset precludes the connection of memory devices to the system bus unless those devices adhere to the strict specifications of the memory controller. All currently available control chipsets on personal computers require the use of dynamic memory devices, such as traditional Dynamic Random Access Memory (DRAM) or Synchronous DRAM. These devices consume too much DC power to allow effective use of battery technology for data backup for critical data storage requirements lasting multiple years. Thus, to utilize hardware components designed in the personal computing industry in the gaming machine, non-volatile memory storage devices compatible with personal computing hardware are needed.
The preservation of critical game information also influences the design of gaming software executed on the gaming machine. Gaming software executed on gaming machines is designed such that critical game information is not easily lost or corrupted. Therefore, gaming software is designed to prevent critical data loss in the event of software bugs, hardware failures, power failures, electrostatic discharges or tampering with the gaming machine. The implementation of the software design in the gaming software to meet critical data storage requirements may be quite complex and may require extensive of use the non-volatile memory hardware.
Traditionally, in the gaming industry, game design and the game platform design have been performed by single entities. Thus, a single gaming machine manufacturer will usually design a game and then design and manufacture a gaming machine allowing play of the game. Further, for game design on a pre-existing gaming machine, game development is usually always performed by the manufacturer of the gaming machine. The approach of the gaming industry may be contrasted with the video game industry. In the video game industry, games for a particular video game platform are typically developed by many companies different from the company that manufactures the video game platform. One trend in the gaming industry is a desire to create a game development environment similar to the video gaming industry where outside vendors may provide games to a gaming machine.
Issues involving the security, the accessibility and the efficient use of the non-volatile memory on gaming machines provide a few barriers to opening up game development to outside vendors as well as to game development in general. Traditionally, software designs for non-volatile memory utilization have used a fixed memory map approach where all of the required non-volatile memory needed to store critical data and perform critical operations are determined before the code is initialized on the gaming machine and remain fixed once the game is launched. The fixed memory approach may be inefficient because temporary non-volatile memory space, which may be required by many gaming software units for the temporary storage of data, is not used for other purposes when it is not being used by a particular gaming software unit. Typically, the amount non-volatile memory on a gaming machine is limited by the hardware requirements such as the power consumption. Thus, to ensure there is enough of the limited non-volatile memory available on the gaming machine, a game designer must be aware of all of the non-volatile memory requirements needed by the different elements of the gaming machine software and not just those utilized for the presentation of game. This requirement is a barrier to an open game design environment and, in general, slows down the game development process.
Another limitation of the fixed non-volatile memory approach is the difficulty of modifying the fixed non-volatile memory map to install new software. When a software installation requires a different amount of memory in different locations than what is available with the current fixed map on the gaming machine, the non-volatile memory is usually re-initialized to generate a new fixed map. The re-initialization of the non-volatile memory destroys all critical data stored in the non-volatile memory and is also time consuming which is undesirable to the gaming machine operator. Thus, a deployment of a new game on a gaming machine is usually an infrequent occurrence. In contrast, in the video game industry, games are frequently and easily deployed on any given platform.
Another barrier to game development and an open game development environment is the accessibility of the non-volatile memory. Currently, gaming machine software development tools do not provide easy or standard methods for allocating and determining the contents of the non-volatile memory. These deficiencies make producing error free software involving the non-volatile memory more difficult and may be deterrent to many game designers.
Finally, the fixed memory approach for non-volatile memory may be infeasible for an open game development environment because of security issues. In the fixed memory approach, it is undesirable to provide the locations in memory where critical data is stored because it increases the potential for tampering with the gaming machine. For instance, a person might alter a non-volatile memory location to illegally obtain a jackpot. Thus, for security reasons, it would be undesirable to use a fixed memory approach in an open game development environment because the locations of critical data in the non-volatile memory would have to be openly shared.
In view of the above, to improve the game development process for gaming machines, it would be desirable to provide a more accessible, less complicated, more secure and more efficient methods and apparatus of providing non-volatile memory hardware and software on a gaming machine.
This invention addresses the needs indicated above by providing a gaming machine with a non-volatile memory storage device and gaming software that allows the dynamic allocation and de-allocation of memory locations in a non-volatile memory. The non-volatile memory storage devices interface to an industry standard peripheral component interface (PCI) bus commonly used in the computer industry allowing communication between a master gaming controller and the non-volatile memory. The master gaming controller executes software for a non-volatile memory allocation system that enables the dynamic allocation and de-allocation of non-volatile memory locations. In addition, the non-volatile memory allocation system enables a non-volatile memory file system. With the non-volatile memory file system, critical data stored in the non-volatile memory may be accessed and modified using operating system utilities such as text processors, graphic utilities and compression utilities.
One aspect of the present invention provides a gaming machine with a non-volatile storage device. The gaming machine may be generally characterized as including a: 1) a master gaming controller controlling one or more games played on the gaming machine where the game played on the gaming machine is selected from the group consisting of video poker, video black jack, video pachinko, video slots, video pachinko and mechanical slots, 2) a PCI bus for communication between the master gaming controller and one or more devices connected to the PCI bus, 3) a non-volatile memory storage device that communicates with the master gaming controller via the PCI bus and 4) a non-volatile memory allocation system executed by the master gaming controller wherein the non-volatile memory allocation system dynamically allocates and de-allocates non-volatile memory locations in non-volatile memory located in the non-volatile memory storage device. In specific embodiments, the non-volatile memory is selected from the group consisting of battery-backed SRAM and flash memory where the non-volatile memory stores between about 1 Megabytes and 32 Megabytes of data. The one or more devices connected to the PCI bus may be selected from the group consisting of a gaming system extension, an audio controller and a network controller.
In specific embodiments, the gaming machine may include a main communication interface allowing communication with one or more devices located outside of the gaming machine such that the one or more devices located outside the gaming machine retrieve data stored in the non-volatile memory locations. Using the main communication interface, the gaming machine may be connected to a casino area network and a wide area progressive network. The gaming machine may also include a battery having sufficient energy to power the non-volatile storage device for at least 4 years where the non-volatile memory locations in the non-volatile storage device store critical data. Thus, information stored in the non-volatile memory locations such as critical data is preserved by the power from a battery when the gaming machine loses power. The critical data is selected from the group consisting of game history information, security information, accounting information, player tracking information, wide area progressive information, game state information or any critical game related data.
In another embodiment, the gaming machine may include a non-volatile memory file system where memory locations in the non-volatile memory correspond to one or more files and one or more directories in the non-volatile memory file system. The one or more files may contain critical data. The contents of the one or more files in the non-volatile memory file system may be accessed using a word processor, graphics utility program or other applications that need access to data contained in xe2x80x9cfilesxe2x80x9d. Further, a main display connected to the gaming machine may be used to display the files and directories in the non-volatile memory file system.
Another aspect of the present invention provides a non-volatile memory storage device for storing critical data in a non-volatile memory on a gaming machine with a master gaming controller. The non-volatile memory storage device may be generally characterized as including: 1) an interface device that receives data signals from the master gaming controller in a first format and converts the data signals to one or more second formats different from said first format where the interface device may be a PCI interface device, 2) a NV-RAM controller that receives data signals in said second format from the interface device and controls access to the non-volatile memory, 3) one more non-volatile memory chips comprising the non-volatile memory that receive data signals from the interface device in the second format and store the critical data contained in the data signals in one or more memory locations on the non-volatile memory chips where the non-volatile memory chips may be battery-backed RAM or flash memory and 4) a battery that provides power to the NV-RAM controller where the battery may be a lithium battery. In specific embodiments, the non-volatile memory may utilize between about 1 and 16 non-volatile memory chips where the non-volatile memory stores between about 1 Megabytes and 32 Megabytes of critical data. Also, the master gaming controller may execute a non-volatile memory allocation system on the non-volatile memory where the non-volatile memory allocation system dynamically allocates and de-allocates memory locations in the non-volatile memory.
In another embodiment, the NV-RAM controller may monitor a battery voltage level and a power supply voltage level. The NV-RAM controller may limit access to the non-volatile memory when the power supply voltage level drops below a power supply cut-off voltage level. The power cut-off voltage level may be between about 4.25 Volts and 4.5 Volts. Further, the NV-RAM controller may select a power supply source for the non-volatile memory according to the power supply voltage level. For instance, the NV-RAM controller may select a battery power supply source for the non-volatile memory when the power supply voltage level drops below the power supply cut-off voltage. The NV-RAM controller may also direct data contained in the data signals to one of the memory chips.
Another aspect of the invention provides a method of accessing a non-volatile memory on a gaming machine with a master gaming controller and a non-volatile storage device where the non-volatile storage device includes an interface device, an NV-RAM controller, a battery and a non-volatile memory. The method may be characterized as including: 1) receiving a data signal from the master gaming controller in a first format at the interface device, 2) converting the data signal to a second format within the interface device, 3) sending the data signal in the second format to the NV-RAM controller and the non-volatile memory, 4) monitoring the power supply voltage level in the NV-RAM controller and 5) limiting access to the non-volatile memory when the power supply voltage level monitored in the NV-RAM controller drops below a power supply voltage cut-off level. In one embodiment, the method may also include one or more of the following: i) storing critical data contained in the data signal in the non-volatile memory, ii) retrieving critical data stored in the non-volatile memory, iii) sending the critical data in data signals in the second format to the interface device, iv) converting the data signals in the second format to data signals in the first format at the interface device, and v) sending the data signals in the first format to the master gaming controller. In another embodiment, the method may include a) monitoring a battery voltage level, b) when the battery voltage level drops below a battery voltage cut-off level, sending a message to the master gaming controller containing a status of the battery, c) selecting a power supply source for the non-volatile memory according to the power supply voltage level, d) when the power supply voltage level drops below a power supply cut-off voltage, selecting the battery as the power supply source for the non-volatile memory and e) decoding an address corresponding to a memory location in the non-volatile memory contained in the data signal in the first format in the interface device.
Another aspect of the present invention provides a method of allocating non-volatile memory locations on a gaming machine containing a master gaming controller executing gaming software comprising one or more clients, a non-volatile memory allocation system and a state-based transaction system. The method may be characterized as including 1) receiving a request at the non-volatile memory system from the client to allocate a block of non-volatile memory locations in the non-volatile memory for critical data transactions in the state-based transaction system, 2) assigning a node to the block of non-volatile memory, 3) creating an NV-RAM node record, 4) assigning a pointer to a heap block and 5) sending a handle corresponding to the block of non-volatile memory to the client where the handle allows the client to subsequently access the non-volatile memory using the non-volatile memory access system. The method may include one or of the following: a) adding the assigned node to an NV-RAM node record list, b) updating a volatile memory look-up list, c) determining an amount of memory available in the non-volatile memory, d) comparing the amount of memory available in the non-volatile memory with an amount of non-volatile memory in the requested block, e) when the amount of requested non-volatile memory exceeds the available amount of non-volatile memory, terminating the non-volatile memory request and f) sending critical data with the non-volatile memory allocation request to the non-volatile memory allocation system.
In specific embodiments, the method may include generating a signature for the NV-RAM node record where the signature is generated using a method selected from the group consisting of a CRC, Checksum, a hash value or other signature generating method. The NV-RAM record may include a handle, an owner handle, a name, a size, a pointer to the heap block, one or more status flags and a signature. The one or more status flags may be selected from the group consisting of a time stamp, an access restriction and a resizing restriction.
Another aspect of the present invention provides a method of modifying previously allocated non-volatile memory locations on a gaming machine containing a master gaming controller executing gaming software which may include one or more clients and a non-volatile memory allocation system. The method may be characterized as including: 1) receiving a function request at the non-volatile memory system from the client wherein the function request includes a handle corresponding to the allocated memory locations and a one or more function request modifiers, 2) locating the NV-RAM node record corresponding to the handle, 3) checking the status flags contained in the NV-RAM node record and 4) when the status flags allow the function request, executing the function request. The function request may be selected from the group consisting of de-allocate, open, close, read, read/directory, write, resize, move, get statistics, change statistics or other potential file related activities and the function request modifier is selected from the group consisting of a requested size, a name, a modification restriction, an access restriction, an owner and a time stamp. In a specific embodiment, the method may include: a) when the function request is a de-allocate function request, b) removing the NV-RAM node record, c) updating an NV-RAM record list and d) updating a heap block and e) updating a volatile memory look-up list.
Another aspect of the present invention provides a method of installing a new client requiring non-volatile memory into the gaming software on a gaming machine containing a master gaming controller executing gaming software comprised of one or more clients and a non-volatile memory allocation system. The method may be characterized as including: 1) determining an amount of non-volatile memory required by the new client, 2) sending an allocation function request to the non-volatile memory allocation system requesting the required amount of non-volatile memory, 3) receiving a handle from the non-volatile memory allocation system wherein the handle allows subsequent access to the requested non-volatile memory, 4) executing the client and 5) sending the handle to the new client. In addition, the method may include: a) determining when the required amount of non-volatile is available in the non-volatile memory and b) when the required amount of memory is not available, sending an error message. In a specific embodiment, the method may include loading a software load manager that manages an installation of the new client.
Another aspect of the present invention provides a method of storing and accessing critical data using a non-volatile memory file system on a gaming machine with a non-volatile memory storing critical data. The method may be generally characterized as including: 1) organizing blocks of memory locations in the non-volatile memory as files in the non-volatile memory file system, 2) storing the files under one or more directories, 3) selecting a first file and 4) accessing critical data stored in the first file using an operating system utility program where the operating system utility program is selected from the group consisting of a word processor and a graphical utility program. The critical data may be selected from the group consisting of game history information, security information, accounting information, player tracking information, wide area progressive information and game state information.
In specific embodiments, the method may include: a) applying a non-volatile memory file system command to the file and directories in the non-volatile memory file system where the non-volatile file system commands include renaming, moving, adding and deleting the file and directories in the non-volatile memory file system, b) displaying the files and directories in the non-volatile memory file system and critical data contained in the one or more files on a display connected to the gaming machine, c) modifying the critical data contained in the one or more files using a word processor or other text/data editor, d) compressing the critical data contained in the one or more files in the non-volatile memory file system using an operating system compression utility and e) setting an access privilege to one or more files and directories in the non-volatile memory file system.
Another aspect of the present invention provides a method of recovering a state of the gaming machine after power is lost on a gaming machine containing a master gaming controller executing gaming software comprising one or more clients and a non-volatile memory allocation system. The method may be characterized as including: 1) activating the non-volatile-memory allocation system, 2) comparing one or more data signatures, 3) determining a status of an operation that was being performed by the non-volatile memory when the power was lost and 4) when the status indicates the operation is incomplete, completing the operation. In addition, the method may include one or more of the following: a) generating one or more data signatures, b) when the one or more data signatures do not compare, sending an error message, c) building a node look-up list in volatile memory and undoing the operation and returning the gaming machine to the state prior to the operation.
Another aspect of the present invention provides a gaming machine storing critical data. The gaming machine may be characterized as including: 1) a master gaming controller controlling one or more games played on the gaming machine, 2) a non-volatile memory storage device storing critical data from the one or more games played on the gaming machine, 3) gaming software comprising one or more clients executed by the master gaming controller and 4) a non-volatile memory allocation system allocating and modifying non-volatile memory locations in the non-volatile memory storage device based upon function requests from the one or more clients where the clients may be selected from the group consisting of a bank manager, a communication manager, a virtual player tracking unit, an event manager. In addition the gaming machine may include a non-volatile memory file system where files in the non-volatile memory file system may contain critical data stored in the non-volatile memory locations.
These and other features of the present invention will be presented in more detail in the following detailed description of the invention and the associated figures.